Two-loop box with 2 parameters

Finding reduction rules

Initialization

Quit

<<LiteRed`;
(*Loading the package*)
SetDirectory[NotebookDirectory[]];
(*Setting working directory*)
SetDim[d];
(*d stands for the dimensionality*)
Declare[{l,r,p1,p2,q},Vector,{s,t},Number];(*vector variables*)
sp[p1,p1]=1;sp[p2,p2]=1;sp[p1,p2]=s/2-1;sp[q,q]=-s;sp[p1,q]=1-(s/2)-t;sp[p2,q]=-1+(s/2)+t;k1=((p1+p2+q)/2);k2=((p1+p2-q)/2);

Defining the basis and searching for the symmetries

NewBasis[b2,{p2-l,p1-r,l,r,k1-l,k2-r,k1-l+r,k2-r+l,sp[k1-l+r-p1]-1},{r,l},Directory->"b2 dir"];(*Basis definition. sp[p,r] is the irreducible numerator.*)
GenerateIBP[b2](*IBP generation. Can be also invoked by passing GenerateIBP->True option in NewBasis call*)
AnalyzeSectors[b2,{0,0,__}](*Zero and simple sectors determination. Can be also invoked by passing AnalyzeSectors->True option in NewBasis call. The second argument is a pattern which claims that the sectors with sp[p,r] in the denominator should not be analyzed*)

FindSymmetries[b2](*Finding unique and mapped sectors. Can be also invoked by passing FindSymmetries->True option in NewBasis call.*)

AttachGraph[js[b2,0,0,1,1,1,1,1,1,1],{
{1->4,"0"},
{2->3,"0"},
{1->3,"0"},
{2->4,"0"},
{3->5,"0"},
{4->6,"0"},
{5->6,"1"},
{0->1,"(Subscript[k, 1])"},
{0->2,"(Subscript[k, 2])"},
{5->0,"(Subscript[p, 1])"},
{6->0,"(Subscript[p, 2])"}
}]

SetOptions[GraphPlot,MultiedgeStyle->0.3,VertexRenderingFunction->({If[#2>0,Black,Blue],Disk[#1,0.03]}&),EdgeRenderingFunction->(Replace[#3,{
"1"|"(Subscript[p, 1])"|"(Subscript[p, 2])"->{Thickness[0.01],Blue,Line[#1]},
"0"|"(Subscript[k, 1])"|"(Subscript[k, 2])"->{Thin,Black,Dashed,Line[#1]},
_->Line[#1]
}]&)];

Searching for the reduction rules and saving

SolvejSector/@UniqueSectors[b2]

DiskSave[b2](*Saving.*)
Quit[](*Quitting the kernel*)

Applying

Initialization

Quit

<<LiteRed`;(*Loading the package*)
SetDirectory[NotebookDirectory[]];
(*Setting working directory*)
SetDim[d];
(*d stands for the dimensionality*)
Declare[{l,r,p1,p2,q},Vector,{s,t},Number];(*vector variables*)
sp[p1,p1]=1;sp[p2,p2]=1;sp[p1,p2]=s/2-1;sp[q,q]=-s;sp[p1,q]=1-(s/2)-t;sp[p2,q]=-1+(s/2)+t;k1=((p1+p2+q)/2);k2=((p1+p2-q)/2);

<<"b2 dir/b2";

Reduction

IBPReduce[Dinv[j[b2,0,0,1,1,2,1,1,1,1],sp[p1,p2]]]